// 软件工程中，我们不仅要创建一致的定义良好的API，同时也要考虑可重用性。 组件不仅能够支持当前的数据类型，同时也能支持未来的数据类型，这在创建大型系统时为你提供了十分灵活的功能。

export function identify<T>(params: T): T {
	return params
}


identify<number>(123)
identify<string>("12313")
identify<boolean>(true)

interface Person<T> {
	name: string
	sex: string
	id: T
}


const p1: Person<number> = {
	name: '张三',
	sex: '男',
	id: 100
}

const p2: Person<string> = {
	name: '张三',
	sex: '男',
	id: "110"
}



class Animal<T, U> {
	name: T
	age: U
	constructor(name: T, age: U) {
		this.name = name
		this.age = age
	}
}

const a1 = new Animal<string, string>('猫', "3")



